/**
 * 防抖函数，在一定时间内只执行最后一次请求
 *
 */
export function debounce(fn, delay) {
  // 记录上一次的延时器
  var timer = null
  var delay = delay || 500
  return function() {
    var args = arguments
    var that = this
    // 清除上一次延时器
    clearTimeout(timer)
    timer = setTimeout(function() {
      fn.apply(that, args)
    }, delay)
  }
}
/**
 * 节流函数，一定时间内只执行第一次
 */
export function throttle(fn, delay) {
  var lastTime
  var timer
  var delay = delay || 500
  return function() {
    var args = arguments
    // 记录当前函数触发的时间
    var nowTime = Date.now()
    if (lastTime && nowTime - lastTime < delay) {
      clearTimeout(timer)
      timer = setTimeout(function() {
        // 记录上一次函数触发的时间
        lastTime = nowTime
        // 修正this指向问题
        fn.apply(this, args)
      }, delay)
    } else {
      lastTime = nowTime
      fn.apply(this, args)
    }
  }
}
